# Importing Libraries
import pandas as pd
import altair as alt
# Reading Data
cases_data = '311_all_years_fin.csv'
stff = 'clean_sftt.csv'
rain = 'boston_weather_data.csv'
case_df = pd.read_csv(cases_data)
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 101004617607 | 2023-01-03 10:47:06 | ONTIME | Closed | Case Closed. Closed date : 2023-01-03 10:47:35... | Animal Lost | Animal Control | Animal Issues | Animal Lost | 1047 Commonwealth Ave Boston MA 02215 | Boston | 1047 Commonwealth Ave | 2215.0 | 42.3594 | -71.0587 |
| 1 | 101004653125 | 2023-02-02 11:54:26 | ONTIME | Open | Pest Infestation - Residential | Inspectional Services | Housing | Pest Infestation - Residential | 179 Florence St Roslindale MA 02131 | Roslindale | 179 Florence St | 2131.0 | 42.2872 | -71.1217 | |
| 2 | 101004657800 | 2023-02-06 10:18:00 | ONTIME | Open | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 27 Bellamy St Brighton MA 02135 | Allston / Brighton | 27 Bellamy St | 2135.0 | 42.3549 | -71.1699 | |
| 3 | 101004630015 | 2023-01-13 13:03:00 | OVERDUE | Open | SCH1/24Unsatisfactory Living Conditions | Inspectional Services | Housing | Unsatisfactory Living Conditions | 15 Wildwood St Dorchester MA 02124 | Greater Mattapan | 15 Wildwood St | 2124.0 | 42.2839 | -71.0872 | |
| 4 | 101004630010 | 2023-01-13 13:01:00 | OVERDUE | Open | Electrical | Inspectional Services | Building | Electrical | 665 Tremont St Roxbury MA 02118 | South End | 665 Tremont St | 2118.0 | 42.3420 | -71.0759 | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2582034 | 101000369425 | 2011-12-31 21:11:56 | ONTIME | Closed | Case Closed Case Resolved GM2 making a sweep o... | Highway Maintenance | Public Works Department | Highway Maintenance | Highway Maintenance | INTERSECTION of Boylston St & Massachusetts Av... | Back Bay | INTERSECTION Boylston St & Massachusetts Ave | NaN | 42.3473 | -71.0877 |
| 2582035 | 101000369427 | 2011-12-31 21:40:22 | ONTIME | Closed | Case Closed Case Resolved at that location sid... | Sidewalk Repair (Make Safe) | Public Works Department | Highway Maintenance | Sidewalk Repair (Make Safe) | 90 Kilsyth Rd Brighton MA 02135 | Allston / Brighton | 90 Kilsyth Rd | 2135.0 | 42.3402 | -71.1456 |
| 2582036 | 101000369428 | 2011-12-31 22:25:24 | ONTIME | Closed | Case Closed VIOCOR: Violation Corrected | Heat - Excessive Insufficient | Inspectional Services | Housing | Heat - Excessive Insufficient | 16 Glenway St Dorchester MA 02121 | Greater Mattapan | 16 Glenway St | 2121.0 | 42.3015 | -71.0844 |
| 2582037 | 101000369429 | 2011-12-31 22:51:19 | ONTIME | Closed | Case Closed ADCLSD: Administratively Closed | Heat - Excessive Insufficient | Inspectional Services | Housing | Heat - Excessive Insufficient | 130 Talbot Ave Dorchester MA 02124 | Greater Mattapan | 130 Talbot Ave | 2124.0 | 42.2931 | -71.0813 |
| 2582038 | 101000369430 | 2011-12-31 23:11:06 | OVERDUE | Closed | Case Closed Case Resolved completed | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 20 Outlook Rd Mattapan MA 02126 | Mattapan | 20 Outlook Rd | 2126.0 | 42.2823 | -71.0950 |
2582039 rows × 15 columns
# Coordinate boundries for the grid around Mass Ave.
x_max = -71.075
x_min = -71.085
y_max = 42.34
y_min = 42.33
case_df = case_df[(case_df['latitude'] > y_min) & (case_df['latitude'] < y_max)]
case_df = case_df[(case_df['longitude'] > x_min) & (case_df['longitude'] < x_max)]
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 101004631390 | 2023-01-15 10:21:00 | OVERDUE | Open | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 778 Tremont St Roxbury MA 02118 | South End | 778 Tremont St | 2118.0 | 42.3393 | -71.0799 | |
| 40 | 101004616307 | 2023-01-02 07:41:13 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 12:45:11... | CE Collection | Public Works Department | Street Cleaning | CE Collection | 100 W Concord St Roxbury MA 02118 | South End | 100 W Concord St | 2118.0 | 42.3388 | -71.0763 |
| 47 | 101004616375 | 2023-01-02 09:07:30 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 09:30:14... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 654 Massachusetts Ave Roxbury MA 02118 | South End | 654 Massachusetts Ave | 2118.0 | 42.3363 | -71.0763 |
| 53 | 101004616445 | 2023-01-02 09:59:26 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 06:52:22... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 1651 Washington St Roxbury MA 02118 | South End | 1651 Washington St | 2118.0 | 42.3379 | -71.0754 |
| 78 | 101004616179 | 2023-01-01 18:00:00 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 07:27:46... | Needle Pickup | Mayor's 24 Hour Hotline | Needle Program | Needle Pickup | 694 Massachusetts Ave Roxbury MA 02118 | South End | 694 Massachusetts Ave | 2118.0 | 42.3354 | -71.0752 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2581823 | 101000369139 | 2011-12-30 11:48:07 | ONTIME | Closed | Case Closed Case Resolved Both vehicles in spo... | Parking Enforcement | Transportation - Traffic Division | Enforcement & Abandoned Vehicles | Parking Enforcement | 161 W Springfield St Roxbury MA 02118 | South End | 161 W Springfield St | 2118.0 | 42.3393 | -71.0789 |
| 2581932 | 101000369273 | 2011-12-30 15:41:35 | ONTIME | Closed | Case Closed Case Resolved This area is a major... | New Sign Crosswalk or Pavement Marking | Transportation - Traffic Division | Signs & Signals | New Sign Crosswalk or Pavement Marking | 255-257 Northampton St Roxbury MA 02118 | Roxbury | 255-257 Northampton St | 2118.0 | 42.3394 | -71.0814 |
| 2581936 | 101000369277 | 2011-12-30 15:53:44 | OVERDUE | Open | Heat - Excessive Insufficient | Inspectional Services | Housing | Heat - Excessive Insufficient | 111 W Concord St Roxbury MA 02118 | South End | 111 W Concord St | 2118.0 | 42.3393 | -71.0763 | |
| 2581992 | 101000369357 | 2011-12-31 10:15:30 | ONTIME | Closed | Case Closed Case Resolved Crew investigated fo... | Watermain Break | Boston Water & Sewer Commission | Water Issues | Watermain Break | INTERSECTION of Albany St & Melnea Cass Blvd ... | Roxbury | INTERSECTION Albany St & Melnea Cass Blvd | NaN | 42.3312 | -71.0769 |
| 2582022 | 101000369407 | 2011-12-31 15:20:19 | ONTIME | Closed | Case Closed Case Resolved Debris cleaned up by... | Highway Maintenance | Public Works Department | Highway Maintenance | Highway Maintenance | 679 Massachusetts Ave Roxbury MA 02118 | Roxbury | 679 Massachusetts Ave | 2118.0 | 42.3355 | -71.0761 |
43536 rows × 15 columns
# Converting The current Date string into a DateTime object
case_df['DateTime'] = pd.to_datetime(case_df['open_dt'], format='%Y-%m-%d %H:%M:%S')
# Rounding up the DateTime object to the closest date
case_df['DateTime'] = case_df['DateTime'].dt.floor('d')
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | DateTime | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 101004631390 | 2023-01-15 10:21:00 | OVERDUE | Open | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 778 Tremont St Roxbury MA 02118 | South End | 778 Tremont St | 2118.0 | 42.3393 | -71.0799 | 2023-01-15 | |
| 40 | 101004616307 | 2023-01-02 07:41:13 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 12:45:11... | CE Collection | Public Works Department | Street Cleaning | CE Collection | 100 W Concord St Roxbury MA 02118 | South End | 100 W Concord St | 2118.0 | 42.3388 | -71.0763 | 2023-01-02 |
| 47 | 101004616375 | 2023-01-02 09:07:30 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 09:30:14... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 654 Massachusetts Ave Roxbury MA 02118 | South End | 654 Massachusetts Ave | 2118.0 | 42.3363 | -71.0763 | 2023-01-02 |
| 53 | 101004616445 | 2023-01-02 09:59:26 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 06:52:22... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 1651 Washington St Roxbury MA 02118 | South End | 1651 Washington St | 2118.0 | 42.3379 | -71.0754 | 2023-01-02 |
| 78 | 101004616179 | 2023-01-01 18:00:00 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 07:27:46... | Needle Pickup | Mayor's 24 Hour Hotline | Needle Program | Needle Pickup | 694 Massachusetts Ave Roxbury MA 02118 | South End | 694 Massachusetts Ave | 2118.0 | 42.3354 | -71.0752 | 2023-01-01 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2581823 | 101000369139 | 2011-12-30 11:48:07 | ONTIME | Closed | Case Closed Case Resolved Both vehicles in spo... | Parking Enforcement | Transportation - Traffic Division | Enforcement & Abandoned Vehicles | Parking Enforcement | 161 W Springfield St Roxbury MA 02118 | South End | 161 W Springfield St | 2118.0 | 42.3393 | -71.0789 | 2011-12-30 |
| 2581932 | 101000369273 | 2011-12-30 15:41:35 | ONTIME | Closed | Case Closed Case Resolved This area is a major... | New Sign Crosswalk or Pavement Marking | Transportation - Traffic Division | Signs & Signals | New Sign Crosswalk or Pavement Marking | 255-257 Northampton St Roxbury MA 02118 | Roxbury | 255-257 Northampton St | 2118.0 | 42.3394 | -71.0814 | 2011-12-30 |
| 2581936 | 101000369277 | 2011-12-30 15:53:44 | OVERDUE | Open | Heat - Excessive Insufficient | Inspectional Services | Housing | Heat - Excessive Insufficient | 111 W Concord St Roxbury MA 02118 | South End | 111 W Concord St | 2118.0 | 42.3393 | -71.0763 | 2011-12-30 | |
| 2581992 | 101000369357 | 2011-12-31 10:15:30 | ONTIME | Closed | Case Closed Case Resolved Crew investigated fo... | Watermain Break | Boston Water & Sewer Commission | Water Issues | Watermain Break | INTERSECTION of Albany St & Melnea Cass Blvd ... | Roxbury | INTERSECTION Albany St & Melnea Cass Blvd | NaN | 42.3312 | -71.0769 | 2011-12-31 |
| 2582022 | 101000369407 | 2011-12-31 15:20:19 | ONTIME | Closed | Case Closed Case Resolved Debris cleaned up by... | Highway Maintenance | Public Works Department | Highway Maintenance | Highway Maintenance | 679 Massachusetts Ave Roxbury MA 02118 | Roxbury | 679 Massachusetts Ave | 2118.0 | 42.3355 | -71.0761 | 2011-12-31 |
43536 rows × 16 columns
# Filtering the cases to only keep the ones after 2012
case_df = case_df[case_df['DateTime'].dt.year >2012]
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | DateTime | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 101004631390 | 2023-01-15 10:21:00 | OVERDUE | Open | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 778 Tremont St Roxbury MA 02118 | South End | 778 Tremont St | 2118.0 | 42.3393 | -71.0799 | 2023-01-15 | |
| 40 | 101004616307 | 2023-01-02 07:41:13 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 12:45:11... | CE Collection | Public Works Department | Street Cleaning | CE Collection | 100 W Concord St Roxbury MA 02118 | South End | 100 W Concord St | 2118.0 | 42.3388 | -71.0763 | 2023-01-02 |
| 47 | 101004616375 | 2023-01-02 09:07:30 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 09:30:14... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 654 Massachusetts Ave Roxbury MA 02118 | South End | 654 Massachusetts Ave | 2118.0 | 42.3363 | -71.0763 | 2023-01-02 |
| 53 | 101004616445 | 2023-01-02 09:59:26 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 06:52:22... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 1651 Washington St Roxbury MA 02118 | South End | 1651 Washington St | 2118.0 | 42.3379 | -71.0754 | 2023-01-02 |
| 78 | 101004616179 | 2023-01-01 18:00:00 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 07:27:46... | Needle Pickup | Mayor's 24 Hour Hotline | Needle Program | Needle Pickup | 694 Massachusetts Ave Roxbury MA 02118 | South End | 694 Massachusetts Ave | 2118.0 | 42.3354 | -71.0752 | 2023-01-01 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2405358 | 101000993486 | 2013-12-31 07:42:01 | ONTIME | Closed | Case Closed Duplicate of Existing Case 871411 | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 608 Massachusetts Ave Roxbury MA 02118 | South End | 608 Massachusetts Ave | 2118.0 | 42.3373 | -71.0776 | 2013-12-31 |
| 2405359 | 101000993487 | 2013-12-31 07:43:54 | ONTIME | Closed | Case Closed Case Resolved no space for new tree | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 616 Massachusetts Ave Roxbury MA 02118 | South End | 616 Massachusetts Ave | 2118.0 | 42.3370 | -71.0772 | 2013-12-31 |
| 2405498 | 101000993676 | 2013-12-31 09:52:55 | ONTIME | Closed | Case Closed Case Resolved bike not there upon ... | Abandoned Bicycle | Mayor's 24 Hour Hotline | Abandoned Bicycle | Abandoned Bicycle | 97 W Springfield St Roxbury MA 02118 | South End | 97 W Springfield St | 2118.0 | 42.3380 | -71.0773 | 2013-12-31 |
| 2405587 | 101000993830 | 2013-12-31 13:16:51 | OVERDUE | Open | Graffiti Removal | Property Management | Graffiti | Graffiti Removal | INTERSECTION of Ruggles St & Shawmut Ave Roxb... | Roxbury | INTERSECTION Ruggles St & Shawmut Ave | NaN | 42.3320 | -71.0840 | 2013-12-31 | |
| 2405658 | 101000993967 | 2013-12-31 18:07:49 | ONTIME | Closed | Case Closed Case Resolved | Traffic Signal Repair | Transportation - Traffic Division | Signs & Signals | Traffic Signal Repair | INTERSECTION of Massachusetts Ave & Tremont St... | Roxbury | INTERSECTION Massachusetts Ave & Tremont St | NaN | 42.3393 | -71.0804 | 2013-12-31 |
41263 rows × 16 columns
# Reading the rain data
rain_df = pd.read_csv(rain)
rain_df
| time | tavg | tmin | tmax | prcp | wdir | wspd | pres | |
|---|---|---|---|---|---|---|---|---|
| 0 | 2013-03-01 | 3.2 | 1.1 | 5.0 | 0.0 | 342.0 | 15.1 | 1002.7 |
| 1 | 2013-03-02 | 3.1 | 1.1 | 5.6 | 0.0 | 307.0 | 14.4 | 1004.2 |
| 2 | 2013-03-03 | 2.6 | 0.6 | 6.1 | 0.0 | NaN | 14.4 | 1002.6 |
| 3 | 2013-03-04 | 1.8 | -0.6 | 5.0 | 0.0 | 303.0 | 28.1 | 1003.0 |
| 4 | 2013-03-05 | 2.9 | 0.0 | 6.1 | 0.0 | NaN | 16.6 | 1013.5 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 3648 | 2023-02-25 | -7.9 | -10.6 | -6.7 | 0.3 | 313.0 | 11.9 | 1029.5 |
| 3649 | 2023-02-26 | -4.2 | -7.8 | 3.9 | 0.0 | 268.0 | 11.9 | 1012.6 |
| 3650 | 2023-02-27 | -1.7 | -2.8 | -0.6 | 0.0 | 46.0 | 18.7 | 1014.9 |
| 3651 | 2023-02-28 | 0.6 | -1.7 | 2.2 | 7.1 | 86.0 | 23.8 | 1010.7 |
| 3652 | 2023-03-01 | 2.4 | 0.6 | 5.6 | 0.0 | 12.0 | 14.0 | 1019.1 |
3653 rows × 8 columns
# Formating the DateTime object similar to the cases file
rain_df['DateTime'] = pd.to_datetime(rain_df['time'], format='%Y-%m-%d')
rain_df['DateTime'] = rain_df['DateTime'].dt.floor('d')
# Further additions to point and click
def add_pres(row):
date = row['DateTime']
index = rain_df.loc[rain_df['DateTime'] == date].index
if not index.empty:
pres = rain_df.loc[index[0], 'pres']
return pres
else:
print(date)
print(case_df['DateTime'].values[0])
2023-01-15T00:00:00.000000000
case_df['pres'] = case_df.apply(add_pres, axis=1)
2023-03-02 00:00:00 2023-03-02 00:00:00 2023-03-03 00:00:00 2023-03-02 00:00:00 2023-03-07 00:00:00 2023-03-05 00:00:00 2023-03-05 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-08 00:00:00 2023-03-08 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-10 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-11 00:00:00 2023-03-11 00:00:00 2023-03-14 00:00:00 2023-03-11 00:00:00 2023-03-14 00:00:00 2023-03-14 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-15 00:00:00 2023-03-13 00:00:00 2023-03-16 00:00:00 2023-03-15 00:00:00 2023-03-16 00:00:00 2023-03-17 00:00:00 2023-03-18 00:00:00 2023-03-18 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-24 00:00:00 2023-03-27 00:00:00 2023-03-27 00:00:00 2023-03-25 00:00:00 2023-03-27 00:00:00 2023-03-25 00:00:00 2023-03-25 00:00:00 2023-03-25 00:00:00 2023-03-27 00:00:00 2023-03-26 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-27 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-30 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-03-29 00:00:00 2023-04-03 00:00:00 2023-04-01 00:00:00 2023-04-04 00:00:00 2023-04-01 00:00:00 2023-04-02 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-03 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-06 00:00:00 2023-04-04 00:00:00 2023-04-06 00:00:00 2023-04-07 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-08 00:00:00 2023-04-06 00:00:00 2023-04-06 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-07 00:00:00 2023-04-11 00:00:00 2023-04-07 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-11 00:00:00 2023-04-14 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-15 00:00:00 2023-04-12 00:00:00 2023-04-13 00:00:00 2023-04-15 00:00:00 2023-04-16 00:00:00 2023-04-17 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-14 00:00:00 2023-04-18 00:00:00 2023-04-19 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-21 00:00:00 2023-04-21 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-22 00:00:00 2023-04-06 00:00:00 2023-04-11 00:00:00 2023-04-09 00:00:00 2023-04-11 00:00:00 2023-04-12 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-21 00:00:00 2023-04-27 00:00:00 2023-04-24 00:00:00 2023-04-22 00:00:00 2023-04-22 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-29 00:00:00 2023-04-30 00:00:00 2023-04-30 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-04-23 00:00:00 2023-04-23 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-03 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-05-07 00:00:00 2023-04-27 00:00:00 2023-05-07 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-04-29 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-08 00:00:00 2023-05-08 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-04 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-11 00:00:00 2023-05-07 00:00:00 2023-05-11 00:00:00 2023-05-08 00:00:00 2023-05-12 00:00:00 2023-05-08 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-13 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-12 00:00:00 2023-05-12 00:00:00 2023-05-17 00:00:00 2023-05-18 00:00:00 2023-05-13 00:00:00 2023-05-13 00:00:00 2023-05-14 00:00:00 2023-05-14 00:00:00 2023-05-19 00:00:00 2023-05-15 00:00:00 2023-05-20 00:00:00 2023-04-28 00:00:00 2023-04-28 00:00:00 2023-04-28 00:00:00 2023-04-28 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-22 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-17 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2023-05-20 00:00:00 2023-05-20 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-03-02 00:00:00 2023-03-03 00:00:00 2023-03-03 00:00:00 2023-03-05 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-08 00:00:00 2023-03-10 00:00:00 2023-03-11 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-14 00:00:00 2023-03-14 00:00:00 2023-03-15 00:00:00 2023-03-15 00:00:00 2023-03-16 00:00:00 2023-03-16 00:00:00 2023-03-16 00:00:00 2023-03-17 00:00:00 2023-03-17 00:00:00 2023-03-18 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-21 00:00:00 2023-03-21 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-26 00:00:00 2023-03-26 00:00:00 2023-03-29 00:00:00 2023-03-29 00:00:00 2023-03-30 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-06 00:00:00 2023-04-07 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-13 00:00:00 2023-04-14 00:00:00 2023-04-15 00:00:00 2023-04-15 00:00:00 2023-04-16 00:00:00 2023-04-16 00:00:00 2023-04-16 00:00:00 2023-04-17 00:00:00 2023-04-17 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-20 00:00:00 2023-04-21 00:00:00 2023-04-22 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-04-28 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-28 00:00:00 2023-04-29 00:00:00 2023-04-29 00:00:00 2023-04-29 00:00:00 2023-04-30 00:00:00 2023-04-30 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-06 00:00:00 2023-05-06 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-21 00:00:00 2023-05-16 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-12 00:00:00 2023-05-13 00:00:00 2023-05-13 00:00:00 2023-05-14 00:00:00 2023-05-14 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-17 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-19 00:00:00 2023-05-19 00:00:00 2023-05-18 00:00:00 2023-05-19 00:00:00 2023-05-19 00:00:00 2023-05-21 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-03-02 00:00:00 2023-03-03 00:00:00 2023-03-03 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-10 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-14 00:00:00 2023-03-15 00:00:00 2023-03-15 00:00:00 2023-03-16 00:00:00 2023-03-16 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-24 00:00:00 2023-03-24 00:00:00 2023-03-24 00:00:00 2023-03-27 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-04-01 00:00:00 2023-04-02 00:00:00 2023-04-02 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-10 00:00:00 2023-04-06 00:00:00 2023-04-06 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-11 00:00:00 2023-04-11 00:00:00 2023-04-11 00:00:00 2023-04-24 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-15 00:00:00 2023-04-15 00:00:00 2023-04-18 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-20 00:00:00 2023-04-22 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-28 00:00:00 2023-05-04 00:00:00 2023-04-29 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-06 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-08 00:00:00 2023-05-08 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-12 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-13 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-19 00:00:00 2023-05-19 00:00:00 2023-05-19 00:00:00 2023-05-20 00:00:00 2023-05-21 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-22 00:00:00 2023-03-02 00:00:00 2023-03-04 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-10 00:00:00 2023-03-11 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-14 00:00:00 2023-03-15 00:00:00 2023-03-02 00:00:00 2023-03-02 00:00:00 2023-03-02 00:00:00 2023-03-15 00:00:00 2023-03-02 00:00:00 2023-03-03 00:00:00 2023-03-03 00:00:00 2023-03-04 00:00:00 2023-03-04 00:00:00 2023-03-16 00:00:00 2023-03-05 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-17 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-07 00:00:00 2023-03-18 00:00:00 2023-03-08 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-10 00:00:00 2023-03-21 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-22 00:00:00 2023-03-13 00:00:00 2023-03-14 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-14 00:00:00 2023-03-14 00:00:00 2023-03-23 00:00:00 2023-03-15 00:00:00 2023-05-14 00:00:00 2023-03-25 00:00:00 2023-03-15 00:00:00 2023-03-15 00:00:00 2023-03-25 00:00:00 2023-03-25 00:00:00 2023-03-26 00:00:00 2023-03-26 00:00:00 2023-03-26 00:00:00 2023-03-26 00:00:00 2023-03-27 00:00:00 2023-03-17 00:00:00 2023-03-18 00:00:00 2023-03-18 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-29 00:00:00 2023-03-20 00:00:00 2023-03-29 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-04-01 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-04-04 00:00:00 2023-03-25 00:00:00 2023-03-25 00:00:00 2023-04-04 00:00:00 2023-03-25 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-06 00:00:00 2023-04-06 00:00:00 2023-04-06 00:00:00 2023-03-27 00:00:00 2023-04-07 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-04-07 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-09 00:00:00 2023-03-29 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-03-29 00:00:00 2023-04-10 00:00:00 2023-04-11 00:00:00 2023-04-11 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-04-11 00:00:00 2023-04-11 00:00:00 2023-04-01 00:00:00 2023-04-02 00:00:00 2023-04-13 00:00:00 2023-04-03 00:00:00 2023-04-13 00:00:00 2023-04-03 00:00:00 2023-04-13 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-04 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-16 00:00:00 2023-04-16 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-16 00:00:00 2023-04-05 00:00:00 2023-04-17 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-06 00:00:00 2023-04-06 00:00:00 2023-05-05 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-09 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-21 00:00:00 2023-04-21 00:00:00 2023-04-23 00:00:00 2023-04-24 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-24 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-05-12 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-05-20 00:00:00 2023-04-14 00:00:00 2023-04-27 00:00:00 2023-04-15 00:00:00 2023-04-17 00:00:00 2023-04-17 00:00:00 2023-04-29 00:00:00 2023-04-29 00:00:00 2023-04-18 00:00:00 2023-04-30 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-30 00:00:00 2023-04-30 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-04-19 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-04-20 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-04-20 00:00:00 2023-05-03 00:00:00 2023-04-20 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-04-21 00:00:00 2023-04-22 00:00:00 2023-04-22 00:00:00 2023-04-23 00:00:00 2023-05-05 00:00:00 2023-04-24 00:00:00 2023-05-06 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-05-08 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-04-27 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-04-29 00:00:00 2023-04-29 00:00:00 2023-05-07 00:00:00 2023-05-12 00:00:00 2023-05-12 00:00:00 2023-05-12 00:00:00 2023-05-12 00:00:00 2023-05-01 00:00:00 2023-05-12 00:00:00 2023-05-01 00:00:00 2023-05-03 00:00:00 2023-05-14 00:00:00 2023-05-14 00:00:00 2023-05-14 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-04 00:00:00 2023-03-15 00:00:00 2023-03-02 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-16 00:00:00 2023-05-05 00:00:00 2023-05-06 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-08 00:00:00 2023-05-17 00:00:00 2023-05-08 00:00:00 2023-05-09 00:00:00 2023-05-18 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-18 00:00:00 2023-05-11 00:00:00 2023-05-18 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-19 00:00:00 2023-05-12 00:00:00 2023-05-14 00:00:00 2023-05-20 00:00:00 2023-05-15 00:00:00 2023-05-21 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-22 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-17 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-24 00:00:00 2023-05-20 00:00:00 2023-05-20 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2023-05-15 00:00:00 2023-05-04 00:00:00 2023-04-11 00:00:00 2023-03-02 00:00:00 2023-03-04 00:00:00 2023-03-05 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-10 00:00:00 2023-03-11 00:00:00 2023-03-12 00:00:00 2023-03-12 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-15 00:00:00 2023-03-16 00:00:00 2023-03-18 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-21 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-25 00:00:00 2023-03-26 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-31 00:00:00 2023-04-01 00:00:00 2023-04-01 00:00:00 2023-04-01 00:00:00 2023-04-02 00:00:00 2023-04-03 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-04 00:00:00 2023-04-05 00:00:00 2023-04-06 00:00:00 2023-04-07 00:00:00 2023-04-07 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-10 00:00:00 2023-04-10 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-16 00:00:00 2023-04-16 00:00:00 2023-04-16 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-19 00:00:00 2023-04-19 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-21 00:00:00 2023-04-21 00:00:00 2023-04-21 00:00:00 2023-04-22 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-28 00:00:00 2023-04-29 00:00:00 2023-04-29 00:00:00 2023-04-30 00:00:00 2023-04-30 00:00:00 2023-04-30 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-06 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-08 00:00:00 2023-05-08 00:00:00 2023-05-08 00:00:00 2023-05-08 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-12 00:00:00 2023-05-12 00:00:00 2023-05-13 00:00:00 2023-05-13 00:00:00 2023-05-14 00:00:00 2023-05-14 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-20 00:00:00 2023-05-20 00:00:00 2023-05-20 00:00:00 2023-05-21 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2023-03-02 00:00:00 2023-03-05 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-06 00:00:00 2023-03-07 00:00:00 2023-03-07 00:00:00 2023-03-08 00:00:00 2023-03-08 00:00:00 2023-03-09 00:00:00 2023-03-09 00:00:00 2023-03-10 00:00:00 2023-03-10 00:00:00 2023-03-11 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-13 00:00:00 2023-03-14 00:00:00 2023-03-14 00:00:00 2023-03-14 00:00:00 2023-03-15 00:00:00 2023-03-15 00:00:00 2023-03-15 00:00:00 2023-03-16 00:00:00 2023-03-16 00:00:00 2023-03-16 00:00:00 2023-03-17 00:00:00 2023-03-18 00:00:00 2023-03-18 00:00:00 2023-03-18 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-19 00:00:00 2023-03-20 00:00:00 2023-03-20 00:00:00 2023-03-22 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-23 00:00:00 2023-03-24 00:00:00 2023-03-24 00:00:00 2023-03-25 00:00:00 2023-03-27 00:00:00 2023-03-27 00:00:00 2023-03-27 00:00:00 2023-03-28 00:00:00 2023-03-28 00:00:00 2023-03-29 00:00:00 2023-03-29 00:00:00 2023-03-29 00:00:00 2023-03-29 00:00:00 2023-03-29 00:00:00 2023-03-30 00:00:00 2023-03-31 00:00:00 2023-04-02 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-03 00:00:00 2023-04-04 00:00:00 2023-04-05 00:00:00 2023-04-05 00:00:00 2023-04-07 00:00:00 2023-04-07 00:00:00 2023-04-08 00:00:00 2023-04-08 00:00:00 2023-04-09 00:00:00 2023-04-10 00:00:00 2023-04-12 00:00:00 2023-04-12 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-13 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-14 00:00:00 2023-04-15 00:00:00 2023-04-15 00:00:00 2023-04-17 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-18 00:00:00 2023-04-19 00:00:00 2023-04-20 00:00:00 2023-04-20 00:00:00 2023-04-21 00:00:00 2023-04-22 00:00:00 2023-04-22 00:00:00 2023-04-23 00:00:00 2023-04-24 00:00:00 2023-04-24 00:00:00 2023-04-27 00:00:00 2023-04-24 00:00:00 2023-04-25 00:00:00 2023-04-25 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-26 00:00:00 2023-04-27 00:00:00 2023-04-27 00:00:00 2023-04-28 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-01 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-02 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-03 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-04 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-05 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-07 00:00:00 2023-05-08 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-09 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-10 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-11 00:00:00 2023-05-12 00:00:00 2023-05-14 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-15 00:00:00 2023-05-16 00:00:00 2023-05-16 00:00:00 2023-05-17 00:00:00 2023-05-17 00:00:00 2023-05-17 00:00:00 2023-05-18 00:00:00 2023-05-18 00:00:00 2023-05-21 00:00:00 2023-05-21 00:00:00 2023-05-22 00:00:00 2023-05-22 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-23 00:00:00 2023-05-24 00:00:00 2023-05-24 00:00:00 2013-01-01 00:00:00 2013-01-01 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-02 00:00:00 2013-01-03 00:00:00 2013-01-03 00:00:00 2013-01-03 00:00:00 2013-01-04 00:00:00 2013-01-04 00:00:00 2013-01-04 00:00:00 2013-01-05 00:00:00 2013-01-05 00:00:00 2013-01-05 00:00:00 2013-01-07 00:00:00 2013-01-07 00:00:00 2013-01-07 00:00:00 2013-01-07 00:00:00 2013-01-07 00:00:00 2013-01-08 00:00:00 2013-01-08 00:00:00 2013-01-08 00:00:00 2013-01-08 00:00:00 2013-01-08 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-09 00:00:00 2013-01-10 00:00:00 2013-01-10 00:00:00 2013-01-10 00:00:00 2013-01-11 00:00:00 2013-01-11 00:00:00 2013-01-11 00:00:00 2013-01-11 00:00:00 2013-01-14 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-15 00:00:00 2013-01-16 00:00:00 2013-01-16 00:00:00 2013-01-16 00:00:00 2013-01-16 00:00:00 2013-01-16 00:00:00 2013-01-17 00:00:00 2013-01-18 00:00:00 2013-01-19 00:00:00 2013-01-19 00:00:00 2013-01-20 00:00:00 2013-01-22 00:00:00 2013-01-22 00:00:00 2013-01-22 00:00:00 2013-01-23 00:00:00 2013-01-23 00:00:00 2013-01-23 00:00:00 2013-01-23 00:00:00 2013-01-23 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-24 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-25 00:00:00 2013-01-26 00:00:00 2013-01-27 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-28 00:00:00 2013-01-29 00:00:00 2013-01-29 00:00:00 2013-01-29 00:00:00 2013-01-29 00:00:00 2013-01-29 00:00:00 2013-01-30 00:00:00 2013-01-31 00:00:00 2013-01-31 00:00:00 2013-01-31 00:00:00 2013-01-31 00:00:00 2013-01-31 00:00:00 2013-02-01 00:00:00 2013-02-01 00:00:00 2013-02-02 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-04 00:00:00 2013-02-05 00:00:00 2013-02-05 00:00:00 2013-02-05 00:00:00 2013-02-06 00:00:00 2013-02-06 00:00:00 2013-02-06 00:00:00 2013-02-07 00:00:00 2013-02-08 00:00:00 2013-02-08 00:00:00 2013-02-08 00:00:00 2013-02-08 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-09 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-10 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-11 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-12 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-13 00:00:00 2013-02-14 00:00:00 2013-02-14 00:00:00 2013-02-14 00:00:00 2013-02-14 00:00:00 2013-02-14 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-15 00:00:00 2013-02-16 00:00:00 2013-02-16 00:00:00 2013-02-16 00:00:00 2013-02-16 00:00:00 2013-02-18 00:00:00 2013-02-18 00:00:00 2013-02-18 00:00:00 2013-02-18 00:00:00 2013-02-19 00:00:00 2013-02-19 00:00:00 2013-02-19 00:00:00 2013-02-20 00:00:00 2013-02-20 00:00:00 2013-02-20 00:00:00 2013-02-20 00:00:00 2013-02-21 00:00:00 2013-02-21 00:00:00 2013-02-21 00:00:00 2013-02-21 00:00:00 2013-02-21 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-22 00:00:00 2013-02-23 00:00:00 2013-02-23 00:00:00 2013-02-25 00:00:00 2013-02-25 00:00:00 2013-02-26 00:00:00 2013-02-26 00:00:00 2013-02-26 00:00:00 2013-02-27 00:00:00 2013-02-27 00:00:00 2013-02-27 00:00:00 2013-02-27 00:00:00 2013-02-27 00:00:00 2013-02-27 00:00:00 2013-02-28 00:00:00 2013-02-28 00:00:00
/var/folders/pr/rx1rrffd36q4ys1d_2dbyssr0000gn/T/ipykernel_8017/1829447209.py:1: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy case_df['pres'] = case_df.apply(add_pres, axis=1)
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | DateTime | pres | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 101004631390 | 2023-01-15 10:21:00 | OVERDUE | Open | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 778 Tremont St Roxbury MA 02118 | South End | 778 Tremont St | 2118.0 | 42.3393 | -71.0799 | 2023-01-15 | 1014.7 | |
| 40 | 101004616307 | 2023-01-02 07:41:13 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 12:45:11... | CE Collection | Public Works Department | Street Cleaning | CE Collection | 100 W Concord St Roxbury MA 02118 | South End | 100 W Concord St | 2118.0 | 42.3388 | -71.0763 | 2023-01-02 | 1018.5 |
| 47 | 101004616375 | 2023-01-02 09:07:30 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 09:30:14... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 654 Massachusetts Ave Roxbury MA 02118 | South End | 654 Massachusetts Ave | 2118.0 | 42.3363 | -71.0763 | 2023-01-02 | 1018.5 |
| 53 | 101004616445 | 2023-01-02 09:59:26 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 06:52:22... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 1651 Washington St Roxbury MA 02118 | South End | 1651 Washington St | 2118.0 | 42.3379 | -71.0754 | 2023-01-02 | 1018.5 |
| 78 | 101004616179 | 2023-01-01 18:00:00 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 07:27:46... | Needle Pickup | Mayor's 24 Hour Hotline | Needle Program | Needle Pickup | 694 Massachusetts Ave Roxbury MA 02118 | South End | 694 Massachusetts Ave | 2118.0 | 42.3354 | -71.0752 | 2023-01-01 | 1008.7 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2405358 | 101000993486 | 2013-12-31 07:42:01 | ONTIME | Closed | Case Closed Duplicate of Existing Case 871411 | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 608 Massachusetts Ave Roxbury MA 02118 | South End | 608 Massachusetts Ave | 2118.0 | 42.3373 | -71.0776 | 2013-12-31 | 1020.0 |
| 2405359 | 101000993487 | 2013-12-31 07:43:54 | ONTIME | Closed | Case Closed Case Resolved no space for new tree | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 616 Massachusetts Ave Roxbury MA 02118 | South End | 616 Massachusetts Ave | 2118.0 | 42.3370 | -71.0772 | 2013-12-31 | 1020.0 |
| 2405498 | 101000993676 | 2013-12-31 09:52:55 | ONTIME | Closed | Case Closed Case Resolved bike not there upon ... | Abandoned Bicycle | Mayor's 24 Hour Hotline | Abandoned Bicycle | Abandoned Bicycle | 97 W Springfield St Roxbury MA 02118 | South End | 97 W Springfield St | 2118.0 | 42.3380 | -71.0773 | 2013-12-31 | 1020.0 |
| 2405587 | 101000993830 | 2013-12-31 13:16:51 | OVERDUE | Open | Graffiti Removal | Property Management | Graffiti | Graffiti Removal | INTERSECTION of Ruggles St & Shawmut Ave Roxb... | Roxbury | INTERSECTION Ruggles St & Shawmut Ave | NaN | 42.3320 | -71.0840 | 2013-12-31 | 1020.0 | |
| 2405658 | 101000993967 | 2013-12-31 18:07:49 | ONTIME | Closed | Case Closed Case Resolved | Traffic Signal Repair | Transportation - Traffic Division | Signs & Signals | Traffic Signal Repair | INTERSECTION of Massachusetts Ave & Tremont St... | Roxbury | INTERSECTION Massachusetts Ave & Tremont St | NaN | 42.3393 | -71.0804 | 2013-12-31 | 1020.0 |
41263 rows × 17 columns
sftt_df = pd.read_csv(stff)
sftt_df.drop(columns=['Unnamed: 0'])
| Point X | Point Y | City | Postal Code | Planting Site Id | Tree Id | Genus | Species | Common Name | Diameter | Tree: Amount of pruning seen in tree | Tree: Other features found on tree (check all that apply) | Tree: Percent of Tree that is Green | Planting Site: Is there a stump? | Planting Site: Material in site: | Planting Site: Pit Length | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -71.080342 | 42.331334 | Boston | 2119.0 | 3273653 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | No, the site is empty. (Click Save and you're ... | Mulch | 42.0 |
| 1 | -71.079356 | 42.330610 | Boston | 2119.0 | 3273663 | 2910929.0 | Gleditsia | triacanthos | Honeylocust | 13.5 | None to some | ["Trunk wounds"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Plain dirt | NaN |
| 2 | -71.080507 | 42.331242 | Boston | 2119.0 | 3273668 | 2910934.0 | Fraxinus | pennsylvanica | Green ash | 15.6 | None to some | ["Trunk wounds"] | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | 46.0 |
| 3 | -71.084592 | 42.334658 | Boston | 2120.0 | 3292810 | 2928647.0 | Tilia | tomentosa | Silver linden | 16.1 | None to some | NaN | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Mulch | 84.0 |
| 4 | -71.080625 | 42.331163 | Boston | 2118.0 | 3273674 | 2910939.0 | Fraxinus | pennsylvanica | Green ash | 12.9 | None to some | NaN | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 52.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 662 | -71.080041 | 42.331683 | Boston | 2119.0 | 3273624 | 2910892.0 | Fraxinus | pennsylvanica | Green ash | 15.0 | None to some | NaN | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Plain dirt | NaN |
| 663 | -71.079617 | 42.331819 | Boston | 2119.0 | 3273627 | 2910895.0 | Pyrus | calleryana | Callery pear | 17.7 | None to some | ["Trunk wounds"] | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | 60.0 |
| 664 | -71.079729 | 42.331739 | Boston | 2119.0 | 3273635 | 2910903.0 | Pyrus | calleryana | Callery pear | 6.8 | None to some | ["Discoloring of leaves", "Sucker growth"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 43.0 |
| 665 | -71.078583 | 42.331534 | Boston | 2119.0 | 3273645 | 2910912.0 | Zelkova | serrata | Japanese zelkova | 19.1 | NaN | NaN | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | NaN |
| 666 | -71.080239 | 42.331434 | Boston | 2119.0 | 3273646 | 2910913.0 | Gleditsia | triacanthos | Honeylocust | 22.0 | None to some | ["Trunk wounds"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 92.0 |
667 rows × 16 columns
# Function to create a grid around Mass Ave and diving it into sectors
def assign_grid_section(x, y, x_min, x_max, y_min, y_max):
# calculate the width and height of each grid section
x_step = (x_max - x_min) / 3
y_step = (y_max - y_min) / 3
# calculate the grid section for the x and y coordinates
x_section = int((x - x_min) / x_step)
y_section = int((y - y_min) / y_step)
# Ensure that maximum values fall into the last section
if x_section > 2: x_section = 2
if y_section > 2: y_section = 2
# create a 3x3 grid with different letter for each section
grid = [['A', 'B', 'C'],
['D', 'E', 'F'],
['G', 'H', 'I']]
# return the letter of the grid section for the given x and y coordinates
return grid[y_section][x_section]
# Assigning Tree data into sectors
def grid_value(row):
x = row['Point X']
y = row['Point Y']
y_max = 42.34
y_min = 42.33
x_max = -71.075
x_min = -71.085
sector = assign_grid_section(x, y, x_min, x_max, y_min, y_max)
return sector
# Assigning Case data into sectors
def case_value(row):
x = row['longitude']
y = row['latitude']
y_max = 42.34
y_min = 42.33
x_max = -71.075
x_min = -71.085
sector = assign_grid_section(x, y, x_min, x_max, y_min, y_max)
return sector
# Applying the sector function on the tree data
sftt_df['sector'] = sftt_df.apply(grid_value, axis=1)
sftt_df
| Unnamed: 0 | Point X | Point Y | City | Postal Code | Planting Site Id | Tree Id | Genus | Species | Common Name | Diameter | Tree: Amount of pruning seen in tree | Tree: Other features found on tree (check all that apply) | Tree: Percent of Tree that is Green | Planting Site: Is there a stump? | Planting Site: Material in site: | Planting Site: Pit Length | sector | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 20 | -71.080342 | 42.331334 | Boston | 2119.0 | 3273653 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | No, the site is empty. (Click Save and you're ... | Mulch | 42.0 | B |
| 1 | 23 | -71.079356 | 42.330610 | Boston | 2119.0 | 3273663 | 2910929.0 | Gleditsia | triacanthos | Honeylocust | 13.5 | None to some | ["Trunk wounds"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Plain dirt | NaN | B |
| 2 | 25 | -71.080507 | 42.331242 | Boston | 2119.0 | 3273668 | 2910934.0 | Fraxinus | pennsylvanica | Green ash | 15.6 | None to some | ["Trunk wounds"] | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | 46.0 | B |
| 3 | 27 | -71.084592 | 42.334658 | Boston | 2120.0 | 3292810 | 2928647.0 | Tilia | tomentosa | Silver linden | 16.1 | None to some | NaN | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Mulch | 84.0 | D |
| 4 | 29 | -71.080625 | 42.331163 | Boston | 2118.0 | 3273674 | 2910939.0 | Fraxinus | pennsylvanica | Green ash | 12.9 | None to some | NaN | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 52.0 | B |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 662 | 5593 | -71.080041 | 42.331683 | Boston | 2119.0 | 3273624 | 2910892.0 | Fraxinus | pennsylvanica | Green ash | 15.0 | None to some | NaN | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Plain dirt | NaN | B |
| 663 | 5595 | -71.079617 | 42.331819 | Boston | 2119.0 | 3273627 | 2910895.0 | Pyrus | calleryana | Callery pear | 17.7 | None to some | ["Trunk wounds"] | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | 60.0 | B |
| 664 | 5603 | -71.079729 | 42.331739 | Boston | 2119.0 | 3273635 | 2910903.0 | Pyrus | calleryana | Callery pear | 6.8 | None to some | ["Discoloring of leaves", "Sucker growth"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 43.0 | B |
| 665 | 5609 | -71.078583 | 42.331534 | Boston | 2119.0 | 3273645 | 2910912.0 | Zelkova | serrata | Japanese zelkova | 19.1 | NaN | NaN | Vigorous foliage: 90-100% of crown covered by ... | There is a tree! If so, continue to next section. | Plain dirt | NaN | B |
| 666 | 5610 | -71.080239 | 42.331434 | Boston | 2119.0 | 3273646 | 2910913.0 | Gleditsia | triacanthos | Honeylocust | 22.0 | None to some | ["Trunk wounds"] | Adequate coverage: 50%-89% of crown covered by... | There is a tree! If so, continue to next section. | Mulch | 92.0 | B |
667 rows × 18 columns
sftt_df['sector'].value_counts()
A 140 B 121 I 90 C 86 D 85 H 44 F 44 E 38 G 19 Name: sector, dtype: int64
# Applying the sector function in the case data
case_df['sector_cases'] = case_df.apply(case_value, axis=1)
/var/folders/pr/rx1rrffd36q4ys1d_2dbyssr0000gn/T/ipykernel_8017/3606675908.py:2: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy case_df['sector_cases'] = case_df.apply(case_value, axis=1)
case_df
| case_enquiry_id | open_dt | ontime | case_status | closure_reason | case_title | subject | reason | type | location | neighborhood | location_street_name | location_zipcode | latitude | longitude | DateTime | pres | sector_cases | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 | 101004631390 | 2023-01-15 10:21:00 | OVERDUE | Open | Street Light Outages | Public Works Department | Street Lights | Street Light Outages | 778 Tremont St Roxbury MA 02118 | South End | 778 Tremont St | 2118.0 | 42.3393 | -71.0799 | 2023-01-15 | 1014.7 | H | |
| 40 | 101004616307 | 2023-01-02 07:41:13 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 12:45:11... | CE Collection | Public Works Department | Street Cleaning | CE Collection | 100 W Concord St Roxbury MA 02118 | South End | 100 W Concord St | 2118.0 | 42.3388 | -71.0763 | 2023-01-02 | 1018.5 | I |
| 47 | 101004616375 | 2023-01-02 09:07:30 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 09:30:14... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 654 Massachusetts Ave Roxbury MA 02118 | South End | 654 Massachusetts Ave | 2118.0 | 42.3363 | -71.0763 | 2023-01-02 | 1018.5 | F |
| 53 | 101004616445 | 2023-01-02 09:59:26 | ONTIME | Closed | Case Closed. Closed date : Tue Jan 03 06:52:22... | Requests for Street Cleaning | Public Works Department | Street Cleaning | Requests for Street Cleaning | 1651 Washington St Roxbury MA 02118 | South End | 1651 Washington St | 2118.0 | 42.3379 | -71.0754 | 2023-01-02 | 1018.5 | I |
| 78 | 101004616179 | 2023-01-01 18:00:00 | ONTIME | Closed | Case Closed. Closed date : Mon Jan 02 07:27:46... | Needle Pickup | Mayor's 24 Hour Hotline | Needle Program | Needle Pickup | 694 Massachusetts Ave Roxbury MA 02118 | South End | 694 Massachusetts Ave | 2118.0 | 42.3354 | -71.0752 | 2023-01-01 | 1008.7 | F |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 2405358 | 101000993486 | 2013-12-31 07:42:01 | ONTIME | Closed | Case Closed Duplicate of Existing Case 871411 | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 608 Massachusetts Ave Roxbury MA 02118 | South End | 608 Massachusetts Ave | 2118.0 | 42.3373 | -71.0776 | 2013-12-31 | 1020.0 | I |
| 2405359 | 101000993487 | 2013-12-31 07:43:54 | ONTIME | Closed | Case Closed Case Resolved no space for new tree | New Tree Requests | Parks & Recreation Department | Trees | New Tree Requests | 616 Massachusetts Ave Roxbury MA 02118 | South End | 616 Massachusetts Ave | 2118.0 | 42.3370 | -71.0772 | 2013-12-31 | 1020.0 | I |
| 2405498 | 101000993676 | 2013-12-31 09:52:55 | ONTIME | Closed | Case Closed Case Resolved bike not there upon ... | Abandoned Bicycle | Mayor's 24 Hour Hotline | Abandoned Bicycle | Abandoned Bicycle | 97 W Springfield St Roxbury MA 02118 | South End | 97 W Springfield St | 2118.0 | 42.3380 | -71.0773 | 2013-12-31 | 1020.0 | I |
| 2405587 | 101000993830 | 2013-12-31 13:16:51 | OVERDUE | Open | Graffiti Removal | Property Management | Graffiti | Graffiti Removal | INTERSECTION of Ruggles St & Shawmut Ave Roxb... | Roxbury | INTERSECTION Ruggles St & Shawmut Ave | NaN | 42.3320 | -71.0840 | 2013-12-31 | 1020.0 | A | |
| 2405658 | 101000993967 | 2013-12-31 18:07:49 | ONTIME | Closed | Case Closed Case Resolved | Traffic Signal Repair | Transportation - Traffic Division | Signs & Signals | Traffic Signal Repair | INTERSECTION of Massachusetts Ave & Tremont St... | Roxbury | INTERSECTION Massachusetts Ave & Tremont St | NaN | 42.3393 | -71.0804 | 2013-12-31 | 1020.0 | H |
41263 rows × 18 columns
case_df['sector_cases'].value_counts()
I 10164 H 9851 F 9311 G 2953 D 2799 A 2408 E 1789 B 1174 C 814 Name: sector_cases, dtype: int64
alt.data_transformers.disable_max_rows()
DataTransformerRegistry.enable('default')
#merged_df
brush = alt.selection_interval() # Define brush as a selection interval
sector_selection = alt.selection_multi(fields=['sector_cases'])
/opt/homebrew/lib/python3.10/site-packages/altair/utils/deprecation.py:65: AltairDeprecationWarning: 'selection_multi' is deprecated. Use 'selection_point' warnings.warn(message, AltairDeprecationWarning, stacklevel=1)
points = alt.Chart(case_df).mark_point(filled=True).encode(
alt.X('DateTime:T', title='Years').scale(zero=False),
alt.Y('pres:Q', title='Precipitation in mml').scale(domain=(980, 1050)),
tooltip='pres:Q',
color=alt.condition(brush, 'pres:Q', alt.value('lightgray'), legend=alt.Legend(title="Precipitation"))
).add_params(
brush,
sector_selection
).properties(
title='Precipitation Over Time (2013-2023)',
width=600,
height=300
)
bars = alt.Chart(case_df).mark_bar().encode(
alt.X('count(sector_cases):Q', title='Number of Cases'),
alt.Y('sector_cases:N', title='Sectors'),
tooltip='case_status:N',
color=alt.Color('case_status:N', legend=alt.Legend(title="Case Status")),
order=alt.Order(
# Sort the segments of the bars by this field
'case_status:N',
sort='ascending')
).transform_filter(
brush
).properties(
title='Count of Cases Per Sector',
width=400,
height=300
)
bars2 = alt.Chart(sftt_df).mark_bar().encode(
alt.X('count(sector):Q', title='Number of Trees'),
alt.Y('sector:N', title='Sectors'),
color=alt.Color('sector:N', legend=alt.Legend(title="Sectors")),
tooltip='mean(Diameter)'
).properties(
title='Trees Per Sector',
width=400,
height=300
)
# Add a custom label to the points chart
chart = points & (bars | bars2)
chart